A notification system is a combination of software and hardware that provides a means of delivering messages to a set of recipients. For example, notification systems can send emails or text messages or make phone calls with automated messages. The complexity of the notification system is often dependent on the application. The use of notification systems range from simple publicity applications (e.g. sending notifications of a new product or a sale) to emergency applications (e.g. notifying individuals of a dangerous situation).
With the pervasive use and high availability of different types of computing devices (e.g. Personal Computer, laptop, terminal connected to a server, dumb terminal, tablet computer, PDA, Internet Protocol phone, smart phone), the notification system needs to be capable of reaching any type of computing devices at any time and adapting the presentation of the notification to the capability of the computing device for the notification to have the broadest reach.
Existing notification systems establish connectivity with the devices to be notified at the time of sending a notification. When used as an emergency application, there is a need to keep constant connectivity with all the computing devices that need to receive notifications and to ensure the computing devices are running the correct version of the notification client where applicable.
Notification systems are generally unidirectional, whereby the notification is broadcasted or dispatched to a set of devices and there is little to no capability to extract information from the recipient of the notification. As such, there is a need for bidirectional capability in a notification system, to extract information from the recipient of the notification and to manage the extracted information. For example, in an emergency notification application, it would be of value to request an acknowledgement that a user has received the notification and to maintain a record of which users have acknowledged the notification.
In some applications (e.g. an evacuation scenario), there is also a need for the notification system to take control of the computing devices receiving the notifications and to execute programs on these computing devices to remotely manage the computing devices (e.g. run virus checks or software inventory, shutdown or lock the computing devices).